home *** CD-ROM | disk | FTP | other *** search
/ Mac Magazin/MacEasy 32 / Mac Magazin and MacEasy Magazine CD - Issue 32.iso / Grafik & Text / OzTeX3.0 / Metafont / Inputs / ec / exilig.mf < prev    next >
Text File  |  1997-03-16  |  12KB  |  276 lines

  1. % exilig.mf
  2. %
  3. % (c) Copyright 1995, 1996, 1997 J"org Knappen
  4. % (c) Copyright 1990, 1992 Norbert Schwarz
  5. %
  6. % This file is part of ecfonts version 1.0
  7. %
  8. % Please read the files 00readme.txt, 00inst.txt, 00error.txt, and
  9. % copyrite.txt for further information
  10. %
  11. % You find some documentation in ecdoc.tex (needs LaTeX2e)
  12. %
  13. % Content:
  14. %
  15. %   italic  dotless i,j; ligatures  ff, fi, fl, ffi, ffl
  16.  
  17. version_check(1,0);  % |version_check| was introduced in dc1.3
  18.  
  19. numeric itc#; % modified italic correction on `f' and `ff'
  20. itc#=(asc_height#-x_height#)*slant+.75u#;
  21.  
  22. ecchar "Dotless italic letter i";
  23. beginchar(oct"031",5u#,x_height#,0);
  24. italcorr 1/3x_height#*slant+.5hair#+.5u#;
  25. adjust_fit(if monospace:u#,u# else: 0,0 fi); pickup fine.nib;
  26. x0=0; x5=w; x2=.5w+.25u; x3=.5w-.25u;
  27. if classic_serif:
  28.   hook_out(3,4,5)(skewed);  % hooks
  29.   top y2=x_height;
  30.   pos2(stem,0);
  31.   sloped_serif.l(2,3,a,1/3,jut,serif_drop);
  32. else:
  33.   hook_in(0,1,2)(skewed);
  34.   hook_out(3,4,5)(skewed);  % hooks
  35. fi
  36. filldraw stroke z2e--z3e;  % stem
  37. penlabels(0,1,2,3,4,5); endchar;
  38.  
  39. ecchar "Dotless italic letter j";
  40. beginchar(oct"032",5.5u#,x_height#,desc_depth#);
  41. italcorr x_height#*slant+.5stem#-2u#;
  42. adjust_fit(if monospace:2u# else: 0 fi, 0); pickup fine.nib;
  43. x0=0; x2=x3; pos3(stem,0); lft x3l=hround(w-2u-.5stem);
  44. pos4(vair,-90); pos5(hair,-180); pos6(flare,-180);
  45. bot y3=-1/3d; bot y4r=-d-oo; y6-.5flare=-vround.9d;
  46. if classic_serif:
  47.   top y2=x_height;
  48.   pos2(stem,0);
  49.   sloped_serif.l(2,3,a,1/3,jut,serif_drop);
  50. else:
  51.   hook_in(0,1,2);  % opening hook
  52. fi
  53. x4=1/3(w-u); lft x5r=min(hround-.5u,lft x5r+x4-x5l-eps);
  54. filldraw stroke z2e---z3e...{left}z4e;  % stem and arc
  55. bulb(4,5,6);  % bulb
  56. penlabels(0,1,2,3,4,5,6); endchar;
  57.  
  58. numeric itc; % modified italic correction on `f' and `ff'
  59. itc=(asc_height#-x_height#)*slant+.75u#;
  60.  
  61. ecchar "Italic ligature ff";
  62. beginchar(oct"033",
  63. %if monospace: 12u# else:
  64. (5u#+max(1.5u#,stem#)+max(3.5u#,2flare#))+2letter_fit#, %  fi,
  65.  asc_height#,desc_depth#);
  66. italcorr asc_height#*slant+.75u#;
  67. normal_adjust_fit(0,0); pickup fine.nib;
  68. z98-z88=z99-z89=z14-z4=z15-z5=(if monospace: 4.3u else: 4.8u fi +2letter_fit,0);
  69. .5[x88,x99]=.5w-.1u; x89-x88=u; y98=h; y99=-d;
  70. numeric theta; theta=angle(z88-z89);
  71. pos0(flare,0); pos1(hair,0); pos2(vair,90);
  72. pos3(.5[hair,stem],180); pos4(stem,theta+90);
  73. pos5(stem,theta-90); pos6(.5[hair,stem],0);
  74. pos7(vair,-90); pos8(hair,-180); pos9(flare,-180);
  75. if monospace: rt x1r=hround(.5w+.75u);
  76. else:
  77.  rt x1r=hround(.5w+1.25u);
  78. fi
  79. %if monospace: lft x8r=hround-.35u;
  80. %else:
  81. lft x8r=hround-.35u;
  82. %fi
  83. x2=.5[x1,x4]; x7=.6[x8,x5];
  84. y9-.5flare=vround -.85d; y2-y0=y9-y7; top y2r=h+oo; bot y7r=-d-oo;
  85. y4=.25[x_height,h]; y5=.5[-d,y4];
  86. z4=whatever[z88,z89]; z5=whatever[z88,z89];
  87. x3=.8[x2+x4-x88,x88]; x6=.8[x7+x5-x89,x89]; y3=.8[y4,y2]; y6=.8[y5,y7];
  88. bulb(2,1,0); bulb(7,8,9);  % left bulbs
  89. filldraw stroke z2e{left}...z3e...{z89-z88}z4e;  % upper middle arc
  90. filldraw z4r--z5l--z5r--z4l--cycle;  % left stem
  91. filldraw stroke z5e{z89-z88}...z6e...{left}z7e;  % lower left arc
  92. pos10(flare,0); pos11(hair,0); pos12(vair,90);
  93. pos13(.5[hair,stem],180); pos14(stem,theta+90);
  94. pos15(stem,theta-90); pos16(.5[hair,stem],0);
  95. pos17(vair,-90); pos18(hair,-180); pos19(flare,-180);
  96. rt x11r=hround(w+.25u);
  97. if monospace: lft x18r=hround(.5w-.75u);
  98. else:         lft x18r=hround(.5w-1.25u); fi
  99. x12=.6[x11,x14]; x17=.5[x18,x15];
  100. x13=.8[x12+x14-x98,x98]; x16=.8[x17+x15-x99,x99];
  101. y0=y10; y2=y12; y3=y13; y6=y16; y7=y17; y9=y19;
  102. bulb(12,11,10); bulb(17,18,19);  % right bulbs
  103. filldraw stroke z12e{left}...z13e...{z99-z98}z14e;  % upper right arc
  104. filldraw z14r--z15l--z15r--z14l--cycle;  % right stem
  105. filldraw stroke z15e{z99-z98}...z16e...{left}z17e;  % lower middle arc
  106. pickup crisp.nib; pos20(bar,90); pos21(bar,90);
  107. top y20r=top y21r=x_height;
  108. lft x20=lft x4r-.5stem-u; rt x21=rt x14l+.5stem+1.5u;
  109. filldraw stroke z20e--z21e;  %  crossbar
  110. penlabels(0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,
  111.  20,21,88,89,98,99); endchar;
  112.  
  113.  
  114. ecchar "Italic ligature fi";
  115. beginchar(oct"034",if monospace: 4.5u# else: 6.5u# fi +.5max(1.5u#,stem#)+.5max(3.5u#,2flare#)
  116.  +2letter_fit#,asc_height#,desc_depth#);
  117. italcorr max(asc_height#*slant+.5stem#-2u#,1/3x_height#*slant+.5hair#+.5u#);
  118. normal_adjust_fit(0,0); pickup fine.nib;
  119. .5[x88,x89]=.5(w-if monospace: 2u else: 4u fi -2letter_fit); x89-x88=u; y88=h; y89=-d;
  120. numeric theta; theta=angle(z88-z89);
  121. pos0(flare,0); pos1(hair,0); pos2(vair,90);
  122. pos3(.5[hair,stem],180); pos4(stem,theta+90);
  123. pos5(stem,theta-90); pos6(.5[hair,stem],0);
  124. pos7(vair,-90); pos8(hair,-180); pos9(flare,-180);
  125. pos11(stem,0); rt x11r=hround(w-2.5u+.5stem);
  126. x12=x11; x14=w; hook_out(12,13,14);  % closing hook
  127. x1r=x11r; lft x8r=hround-.35u; x2=.5[x1,x4]; x7=.6[x8,x5];
  128. y9-.5flare=vround-.85d; bot y7r=-d-oo;
  129. y0+.5flare=vround(.85[x_height,h]); top y2r=h+oo;
  130. y4=.25[x_height,h]; y5=.5[-d,y4];
  131. z4=whatever[z88,z89]; z5=whatever[z88,z89];
  132. x3=.8[x2+x4-x88,x88]; x6=.8[x7+x5-x89,x89]; y3=.8[y4,y2]; y6=.8[y5,y7];
  133. bulb(2,1,0); bulb(7,8,9);  % bulbs
  134. filldraw stroke z2e{left}...z3e...{z89-z88}z4e;  % upper arc
  135. filldraw z4r--z5l--z5r--z4l--cycle;  % left stem
  136. filldraw stroke z5e{z89-z88}...z6e...{left}z7e;  % lower arc
  137. top y11=x_height; filldraw stroke z11e--z12e;  % right stem
  138. pickup crisp.nib; pos20(bar,90); pos21(bar,90);
  139. top y20r=top y21r=x_height;
  140. lft x20=lft x4r-.5stem-u; x21=x11;
  141. filldraw stroke z20e--z21e;  %  crossbar
  142. penlabels(0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,20,21,88,89); endchar;
  143.  
  144. ecchar "Italic ligature fl";
  145. beginchar(oct"035",if monospace: 5u# else: 7u# fi +.5max(1.5u#,stem#)+.5max(3.5u#,2flare#)
  146.  +2letter_fit#,asc_height#,desc_depth#);
  147. italcorr max(asc_height#*slant+.5stem#-2u#,1/3x_height#*slant+.5hair#+.5u#);
  148. normal_adjust_fit(0,0); pickup fine.nib;
  149. .5[x88,x89]=.5(w-if monospace: 3.5u else: 4.5u fi -2letter_fit);
  150. x89-x88=u; y88=h; y89=-d;
  151. numeric theta; theta=angle(z88-z89);
  152. pos0(flare,0); pos1(hair,0); pos2(vair,90);
  153. pos3(.5[hair,stem],180); pos4(stem,theta+90);
  154. pos5(stem,theta-90); pos6(.5[hair,stem],0);
  155. pos7(vair,-90); pos8(hair,-180); pos9(flare,-180);
  156. pos11(stem,0); rt x11r=hround(w-2.5u+.5stem); rt x1r=lft x11l;
  157. x12=x11; x14=w; hook_out(12,13,14);  % closing hook
  158. if monospace: lft x8r=hround-.55u;
  159. else: lft x8r=hround-.35u; fi
  160. x2=.5[x1,x4]; x7=.6[x8,x5];
  161. y9-.5flare=vround -.85d; y2-y0=y9-y7; top y2r=h+oo; bot y7r=-d-oo;
  162. y4=.25[x_height,h]; y5=.5[-d,y4];
  163. z4=whatever[z88,z89]; z5=whatever[z88,z89];
  164. x3=.8[x2+x4-x88,x88]; x6=.8[x7+x5-x89,x89]; y3=.8[y4,y2]; y6=.8[y5,y7];
  165. bulb(2,1,0); bulb(7,8,9);  % bulbs
  166. filldraw stroke z2e{left}...z3e...{z89-z88}z4e;  % upper arc
  167. filldraw z4r--z5l--z5r--z4l--cycle;  % left stem
  168. filldraw stroke z5e{z89-z88}...z6e...{left}z7e;  % lower arc
  169. top y11=h; filldraw stroke z11e--z12e;  % right stem
  170. pickup crisp.nib; pos20(bar,90); pos21(bar,90);
  171. top y20r=top y21r=x_height;
  172. lft x20=lft x4r-.5stem-u; x21=x11;
  173. filldraw stroke z20e--z21e;  %  crossbar
  174. penlabels(0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,20,21,88,89); endchar;
  175.  
  176.  
  177. ecchar "Italic ligature ffi";
  178. beginchar(oct"036",
  179. if monospace: 7.75u# else: 11.75u# fi +.5max(1.5u#,stem#)+.5max(3.5u#,2flare#)
  180.  +4letter_fit#,asc_height#,desc_depth#);
  181. italcorr max(asc_height#*slant+.5stem#-2u#,1/3x_height#*slant+.5hair#+.5u#);
  182. normal_adjust_fit(0,0); pickup fine.nib;
  183. z98-z88=z99-z89=z14-z4=z15-z5=(if monospace: 3u else: 5u fi +2letter_fit,0);
  184. numeric theta,mid_f;
  185. mid_f=.5[x88,x99]=.5(w-if monospace: 2.25u else: 4.25u fi -2letter_fit);
  186. x89-x88=u;
  187. y98=h; y99=-d; theta=angle(z88-z89);
  188. pos21(stem,0); rt x21r=hround(w-2.5u+.5stem);
  189. x22=x21; x24=w; hook_out(22,23,24);  % closing hook
  190. pos0(flare,0); pos1(hair,0); pos2(vair,90);
  191. pos3(.5[hair,stem],180); pos4(stem,theta+90);
  192. pos5(stem,theta-90); pos6(.5[hair,stem],0);
  193. pos7(vair,-90); pos8(hair,-180); pos9(flare,-180);
  194. if monospace: rt x1r=hround(mid_f+u);
  195. else:         rt x1r=hround(mid_f+1.75u); fi
  196. if monospace: lft x8r=hround -.65u;
  197. else:         lft x8r=hround-.35u; fi
  198. x2=.5[x1,x4]; x7=.6[x8,x5];
  199. y9-.5flare=vround -.85d; y2-y0=y9-y7; top y2r=h+oo; bot y7r=-d-oo;
  200. y4=.25[x_height,h]; y5=.5[-d,y4];
  201. z4=whatever[z88,z89]; z5=whatever[z88,z89];
  202. x3=.8[x2+x4-x88,x88]; x6=.8[x7+x5-x89,x89]; y3=.8[y4,y2]; y6=.8[y5,y7];
  203. bulb(2,1,0); bulb(7,8,9);  % left bulbs
  204. filldraw stroke z2e{left}...z3e...{z89-z88}z4e;  % upper middle arc
  205. filldraw z4r--z5l--z5r--z4l--cycle;  % left stem
  206. filldraw stroke z5e{z89-z88}...z6e...{left}z7e;  % lower left arc
  207. pos10(flare,0); pos11(hair,0); pos12(vair,90);
  208. pos13(.5[hair,stem],180); pos14(stem,theta+90);
  209. pos15(stem,theta-90); pos16(.5[hair,stem],0);
  210. pos17(vair,-90); pos18(hair,-180); pos19(flare,-180);
  211. x11r=x21r; lft x18r=hround(mid_f-1.25u); x12=.5[x11,x14]; x17=.5[x18,x15];
  212. x13=.8[x12+x14-x98,x98]; x16=.8[x17+x15-x99,x99];
  213. y10+.5flare=vround .85[x_height,h];
  214. y2=y12; y3=y13; y6=y16; y7=y17; y9=y19;
  215. bulb(12,11,10); bulb(17,18,19);  % right bulbs
  216. filldraw stroke z12e{left}...z13e...{z99-z98}z14e;  % upper right arc
  217. filldraw z14r--z15l--z15r--z14l--cycle;  % middle stem
  218. filldraw stroke z15e{z99-z98}...z16e...{left}z17e;  % lower middle arc
  219. top y21=x_height; filldraw stroke z21e--z22e;  % right stem
  220. pickup crisp.nib; pos30(bar,90); pos31(bar,90);
  221. top y30r=top y31r=x_height;
  222. lft x30=lft x4r-.5stem-u; x31=x21;
  223. filldraw stroke z30e--z31e;  %  crossbar
  224. penlabels(0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,
  225.  20,21,22,23,24,30,31,88,89,98,99); endchar;
  226.  
  227.  
  228. ecchar "Italic ligature ffl";
  229. beginchar(oct"037",
  230.   if monospace: 8u# else: 12u# fi +.5max(1.5u#,stem#)+.5max(3.5u#,2flare#)
  231.      +4letter_fit#,asc_height#,desc_depth#);
  232. italcorr max(asc_height#*slant+.5stem#-2u#,1/3x_height#*slant+.5hair#+.5u#);
  233. normal_adjust_fit(0,0); pickup fine.nib;
  234. z98-z88=z99-z89=z14-z4=z15-z5=(if monospace: 3u else: 5u fi+2letter_fit,0);
  235. numeric theta,mid_f;
  236. mid_f=.5[x88,x99]=.5(w-if monospace: 2u else: 4.5u fi-2letter_fit); x89-x88=u;
  237. y98=h; y99=-d; theta=angle(z88-z89);
  238. pos21(stem,0); rt x21r=hround(w-2.5u+.5stem);
  239. x22=x21; x24=w; hook_out(22,23,24);  % closing hook
  240. pos0(flare,0); pos1(hair,0); pos2(vair,90);
  241. pos3(.5[hair,stem],180); pos4(stem,theta+90);
  242. pos5(stem,theta-90); pos6(.5[hair,stem],0);
  243. pos7(vair,-90); pos8(hair,-180); pos9(flare,-180);
  244. if monospace: rt x1r=hround(mid_f+u);
  245. else:         rt x1r=hround(mid_f+1.25u); fi
  246. lft x8r=hround-.35u;
  247. x2=.5[x1,x4]; x7=.6[x8,x5];
  248. y9-.5flare=vround -.85d; y2-y0=y9-y7; top y2r=h+oo; bot y7r=-d-oo;
  249. y4=.25[x_height,h]; y5=.5[-d,y4];
  250. z4=whatever[z88,z89]; z5=whatever[z88,z89];
  251. x3=.8[x2+x4-x88,x88]; x6=.8[x7+x5-x89,x89]; y3=.8[y4,y2]; y6=.8[y5,y7];
  252. bulb(2,1,0); bulb(7,8,9);  % left bulbs
  253. filldraw stroke z2e{left}...z3e...{z89-z88}z4e;  % upper middle arc
  254. filldraw z4r--z5l--z5r--z4l--cycle;  % left stem
  255. filldraw stroke z5e{z89-z88}...z6e...{left}z7e;  % lower left arc
  256. pos10(flare,0); pos11(hair,0); pos12(vair,90);
  257. pos13(.5[hair,stem],180); pos14(stem,theta+90);
  258. pos15(stem,theta-90); pos16(.5[hair,stem],0);
  259. pos17(vair,-90); pos18(hair,-180); pos19(flare,-180); rt x11r=lft x21l;
  260. lft x18r=hround(mid_f-1.25u); x12=.5[x11,x14]; x17=.5[x18,x15];
  261. x13=.8[x12+x14-x98,x98]; x16=.8[x17+x15-x99,x99];
  262. y0=y10; y2=y12; y3=y13; y6=y16; y7=y17; y9=y19;
  263. bulb(12,11,10); bulb(17,18,19);  % right bulbs
  264. filldraw stroke z12e{left}...z13e...{z99-z98}z14e;  % upper right arc
  265. filldraw z14r--z15l--z15r--z14l--cycle;  % middle stem
  266. filldraw stroke z15e{z99-z98}...z16e...{left}z17e;  % lower middle arc
  267. top y21=h; filldraw stroke z21e--z22e;  % right stem
  268. pickup crisp.nib; pos30(bar,90); pos31(bar,90);
  269. top y30r=top y31r=x_height;
  270. lft x30=lft x4r-.5stem-u; x31=x21;
  271. filldraw stroke z30e--z31e;  %  crossbar
  272. penlabels(0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,
  273.  20,21,22,23,24,30,31,88,89,98,99); endchar;
  274.  
  275. endinput;
  276.